#ifndef _GUI_DWARF_GUI_H
#define _GUI_DWARF_GUI_H


namespace CEGUI
{
	class OgreCEGUIRenderer;
	class System;
	class Window;
	class EventArgs;
	enum MouseButton;
//	class LuaScriptModule;
};

namespace Main
{
	class Loggable;
}


namespace GUI
{
	class Console;
	class DFWindow;

	class MapCellViewer;
	class CutawayControler;

	class DwarfGUI  :public Main::Loggable
	{
	public:
		DwarfGUI(Ogre::RenderWindow *window);
		~DwarfGUI();

		

		bool mouseMoved(const OIS::MouseEvent &arg);
		bool mousePressed(const OIS::MouseEvent &arg,OIS::MouseButtonID id);
		bool mouseReleased(const OIS::MouseEvent &arg,OIS::MouseButtonID id);


		bool DwarfGUI::handleMouseMove(const CEGUI::EventArgs& e);
		bool DwarfGUI::handleMouseButtonUp(const CEGUI::EventArgs& e);
		bool DwarfGUI::handleMouseButtonDown(const CEGUI::EventArgs& e);

		bool keyPressed(const OIS::KeyEvent &arg);
		bool keyReleased(const OIS::KeyEvent &arg);

		void hideCursor();
		void showCursor();

		void update(float elapsedTime); 

		bool DwarfGUI::killGame(const CEGUI::EventArgs& e);
		
		GUI::CutawayControler *getCutawayControler() {return mCutawayControler;}
	protected:

		void createDFScreen();
		CEGUI::MouseButton convertButton(OIS::MouseButtonID buttonID);

		CEGUI::OgreCEGUIRenderer *mRenderer;
		CEGUI::System *mSystem;
		
		CEGUI::Window *mSheet;

		GUI::Console *mConsole;
		GUI::DFWindow *mDFWindow;

		GUI::MapCellViewer *mMapCellViewer;
		GUI::CutawayControler *mCutawayControler;

	}; //class DwarfGUI

}; //namespace GUI










#endif